In many microprocessor-based systems, a microprocessor retrieves and executes program instructions. These instructions are typically stored in a program memory having a bit-width selected for compatibility with the microprocessor. For example, in some applications, the program memory is eight bits wide, while in other applications, the program memory is sixteen bits wide. Typically, a different microprocessor is used for each different bit-width.
Some microprocessors can retrieve and execute instructions from a program memory having one of multiple possible bit-widths. The microprocessor-based system is typically configured to retrieve and execute the instructions using the appropriate bit-width.
Configuring the microprocessor to use the appropriate bit-width involves placing the microprocessor in a state determined by an indication of the bit-width of the program memory. Some techniques of providing this indication involves using external pins to set the microprocessor at one of several pre-defined states. These techniques often require a dedicated pin or a pull-up or pull-down resistor on a pin already used for another purpose. In certain application environments in which device size or pin count is an important consideration, these additional components use space or pins that could otherwise be eliminated or used for other purposes.
In some microprocessor-based systems, the bit-width used by the microprocessor to retrieve and execute instructions is set using a technique known as dynamic bus sizing. The microprocessor receives a signal indicating the bit-width of the program memory from the program memory when the microprocessor accesses the program memory. In many applications using dynamic bus sizing, the program memory and the microprocessor each use dedicated pins for respectively transmitting and receiving the signals. In applications in which it is desirable to maintain a minimal pin count, dynamic bus sizing uses pins that could otherwise be used for other purposes.